# Auteur de l'application (Noms séparés par des _) 
AUTHOR=pons_moreau
# Ficher additionnels à rajouter dans le tar
FILES=
# Nom du fichier binaire
EXECDIR=../bin/
EXEC_VIRM=vIRm
EXEC_LAUNCH=launch
EXEC_OREADER=oreader
# Etape de realisation du projet par dfaut
MODNAME=RELEASE
# Nom de l'archive
TAR=$(AUTHOR).tar.gz
# Compilateur
CC=gcc
# Librairies dynamiques à charger
SOFLAGS=-rdynamic -ldl
LIBDIR=
LIBFILES=
# Repertoire des fichiers d'entetes
INCLUDE=-I./include
# Options de debuggage si active
LEVEL=1
DEBUGFLAGS=-g$(LEVEL) -pg
# Options de compilations
CFLAGS=-Wall 
# Options d'editions de liens
LFLAGS=$(CFLAGS)
# Fichiers sources
SRCDIR=.
SRCDIR_LAUNCH=$(SRCDIR)/launch
SRCDIR_OREADER=$(SRCDIR)/oreader
SRCDIR_VIRM=$(SRCDIR)/vIRm
CFILES_VIRM=$(SRCDIR_VIRM)/vIRm.c $(SRCDIR_VIRM)/parser.c $(SRCDIR_VIRM)/shell.c $(SRCDIR_VIRM)/instance.c $(SRCDIR_VIRM)/util/strlib.c $(SRCDIR_VIRM)/sharedMemory/sharedMemory.c
CFILES_OREADER=$(SRCDIR_OREADER)/oreader.c 
CFILES_LAUNCH=$(SRCDIR_LAUNCH)/launch.c $(SRCDIR_LAUNCH)/util/launchUtil.c $(SRCDIR_LAUNCH)/handleTask.c $(SRCDIR_LAUNCH)/util/fileUtil.c $(SRCDIR_VIRM)/sharedMemory/sharedMemory.c
# Fichers objets
OFILES_VIRM=$(CFILES_VIRM:.c=.o)
OFILES_OREADER=$(CFILES_OREADER:.c=.o)
OFILES_LAUNCH=$(CFILES_LAUNCH:.c=.o)

# Fichiers d'en-tête
HDIR=include/

# Generation des fichiers d'en-têtes à partir des fichiers sources en excluant le main.c
# Ne pas configurer les lignes ci-dessous
#HFILES=$(subst $(SRCDIR)main.c,,$(CFILES)) 
#HFILES:=$(subst $(SRCDIR),$(HDIR), $(HFILES))
#HFILES:=$(HFILES:.c=.h)

# Mode DEBUG ?
ifdef DEBUG
	MODNAME=DEBUG
	CFLAGS+=$(DEBUGFLAGS)
endif

# Chargement des librairies dynamiques et export du répertoire
ifdef DYN
	LFLAGS+=$(SOFLAGS)
endif


all: virm clean
		
virm : $(OFILES_VIRM) launch
	@echo --------------------------------
	@echo  	Creating executable $(EXECDIR)$@
	$(CC)  -o $(EXECDIR)$(EXEC_VIRM) $(OFILES_VIRM) $(LFLAGS) 
	@echo --------------------------------

launch : $(OFILES_LAUNCH) oreader
	@echo --------------------------------
	@echo  	Creating executable $(EXECDIR)$@
	$(CC)  -o $(EXECDIR)$(EXEC_LAUNCH) $(OFILES_LAUNCH) $(LFLAGS) $(SOFLAGS)
	@echo --------------------------------


oreader : $(OFILES_OREADER)
	@echo --------------------------------
	@echo  	Creating executable $(EXECDIR)$@
	$(CC)  -o $(EXECDIR)$(EXEC_OREADER) $(OFILES_OREADER) $(LFLAGS)
	@echo --------------------------------

%.o: %.c 
	@echo --------------------------------
	@echo 	Compilation de $< Mode: $(MODNAME)
	$(CC)   -o $@ -c $< $(CFLAGS) $(INCLUDE)
	@echo --------------------------------
	
clean:
	@echo --------------------------------
	@echo Destruction des fichiers objets
	rm -rf $(SRCDIR_LAUNCH)/*.o *.~
	rm -rf $(SRCDIR_OREADER)/*.o *.~
	rm -rf $(SRCDIR_VIRM)/*.o *.~
	@echo --------------------------------
	 
mrproper: clean
	@echo --------------------------------
	@echo 		Destruction complete
	@rm -rf $(EXECDIR)*
	@rm -rf $(TAR)
	@echo --------------------------------

tar: $(EXEC) clean
	@echo --------------------------------
	@echo Creation de $(TAR)
	@tar -cf $(TAR) $(CFILES) $(HFILES) $(LIBDIR)$(LIBFILES) $(FILES) $(EXECDIR)$(EXEC) makefile
	@echo Archive creee avec succes
	@echo --------------------------------
